﻿using System.Collections.Generic;
using CTS.Com.Domain.Model;
using CTS.Data.Domain.Dao;

namespace CTS.Data.APLocales.Domain.Dao
{
    /// <summary>
    /// LocaleComDao
    /// </summary>
    public class LocaleComDao : GenericDao<EntitiesDataContext>
    {
        // Định nghĩa hằng file sql
        public const string LOCALECOMDAO_GETDIV_SQL = "LocaleComDao_GetDiv.sql";
        public const string LOCALECOMDAO_GETNAME_SQL = "LocaleComDao_GetName.sql";

        /// <summary>
        /// Kiểm tra tồn tại locale
        /// </summary>
        public bool IsExist(string appCd, string localeCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { appCd, localeCd };
            // Kết quả trả về
            return IsExist<APLocale>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy thông tin locale
        /// </summary>
        public APLocale GetInfo(string appCd, string localeCd, bool ignoreDeleteFlag)
        {
            // Tạo danh sách khóa chính
            var keys = new string[] { appCd, localeCd };
            // Kết quả trả về
            return GetSingle<APLocale>(keys, ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách locale
        /// </summary>
        public IList<APLocale> GetList(bool ignoreDeleteFlag)
        {
            // Kết quả trả về
            return GetList<APLocale>(ignoreDeleteFlag);
        }

        /// <summary>
        /// Lấy danh sách code
        /// </summary>
        public IList<KeyValueObject> GetDiv(string appCd, string[] skipCodes, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                AppCd = appCd,
                SkipCodes = skipCodes,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetListByFile<KeyValueObject>(LOCALECOMDAO_GETDIV_SQL, param);
        }


        /// <summary>
        /// Lấy tên locale
        /// </summary>
        public string GetName(string appCd, string localeCd, bool ignoreDeleteFlag)
        {
            // Tạo tham số
            var param = new {
                AppCd = appCd,
                LocaleCd = localeCd,
                IgnoreDeleteFlag = ignoreDeleteFlag
            };
            // Kết quả trả về
            return GetObjectByFile<string>(LOCALECOMDAO_GETNAME_SQL, param);
        }
    }
}
